1
Transición a producción: La mentalidad de despliegue
EvoClass-AI002Lección 10
00:00

Transición a producción: La mentalidad de despliegue

Este módulo final pone el puente entre la investigación exitosa —donde alcanzamos una alta precisión en un cuaderno— y una ejecución confiable. El despliegue es el proceso clave que transforma un modelo de PyTorch en un servicio mínimo y autónomo, capaz de entregar predicciones de forma eficiente a los usuarios finales con baja latencia y servicio autónomocapaz de servir predicciones de forma eficiente a los usuarios finales con baja latencia y alta disponibilidad.

1. El cambio de mentalidad para producción

El entorno exploratorio de un cuaderno de Jupyter es estado y frágil para uso en producción. Debemos reestructurar nuestro código desde scripts exploratorios hasta componentes estructurados y modulares adecuados para solicitudes concurrentes, optimización de recursos y una integración sin problemas en sistemas más grandes.

Inferencia de baja latencia:Alcanzar tiempos de predicción consistentemente por debajo de los umbrales objetivo (por ejemplo, $50\text{ms}$), fundamental para aplicaciones en tiempo real.
Alta disponibilidad:Diseñar el servicio para que sea confiable, sin estado y capaz de recuperarse rápidamente tras un fallo.
Reproducibilidad:Garantizar que el modelo desplegado y su entorno (dependencias, pesos, configuración) coincidan exactamente con los resultados de investigación validados.
Enfoque: El servicio del modelo
En lugar de desplegar todo el script de entrenamiento, desplegamos un pequeño envoltorio de servicio autónomo. Este servicio debe realizar únicamente tres tareas: cargar el artefacto del modelo optimizado, aplicar el preprocesamiento de entrada y ejecutar el paso hacia adelante para devolver la predicción.
servicio_inferencia.py
TERMINALbash — uvicorn-service
> Listo. Haz clic en "Simular flujo de despliegue" para ejecutar.
>
INSPECTOR DE ARTEFACTOSEn vivo

Simula el flujo para ver los artefactos de producción cargados.
Pregunta 1
¿Qué característica de un cuaderno de Jupyter lo hace inadecuado para el despliegue en producción?
Utiliza principalmente código Python
Es inherentemente estado y consume muchos recursos
No puede acceder directamente a la GPU
Pregunta 2
¿Cuál es el propósito principal de convertir un modelo de PyTorch a TorchScript o ONNX antes del despliegue?
Optimización para una ejecución más rápida en C++ y reducción de dependencia de Python
Para evitar el robo del modelo o su ingeniería inversa
Para procesar automáticamente el preprocesamiento de datos de entrada
Pregunta 3
Al diseñar una API de producción, ¿cuándo deben cargarse los pesos del modelo?
Una sola vez, cuando se inicializa el servicio
Al inicio de cada solicitud de predicción
Cuando se recibe la primera solicitud al servicio
Desafío: Definir el servicio mínimo
Planear los requisitos estructurales para un servicio de baja latencia.
Necesitas desplegar un modelo complejo de clasificación de imágenes ($1\text{GB}$) que requiere un preprocesamiento especializado de imágenes. Debe manejar $50$ solicitudes por segundo.
Paso 1
Para asegurar un alto rendimiento y baja latencia promedio, ¿cuál es el cambio estructural más crítico necesario para el script de Python?
Solución:
Refactoriza la base de código en módulos aislados (Preprocesamiento, Definición del modelo, Ejecutor de inferencia) y asegúrate de que todo el proceso esté empaquetado para contenerización.
Paso 2
¿Cuál es el artefacto mínimo necesario para enviar, además de los pesos entrenados?
Solución:
La definición exacta de código/clase utilizada para el preprocesamiento y la definición de arquitectura del modelo, serializada y acoplada con los pesos.